﻿<!--选择文件的区域-->
<div id="i_select_files"></div>

<!--已选择的文件队列-->
<div id="i_stream_files_queue"></div>
<br />
<!--上传按钮-->
<form>
    <button class="btn btn-primary" onclick="javascript:_t.upload();">开始上传</button>
    <button class="btn btn-warning" onclick="javascript:_t.stop();">停止上传</button>
    <button class="btn btn-danger" onclick="javascript:_t.cancel();">取消</button>
</form>
<br>
上传信息:
<div id="i_stream_message_container" class="stream-main-upload-box" style="overflow: auto;height:200px;">
</div>
<br>




<script type="text/javascript">
/**
 * 配置文件（如果没有默认字样，说明默认值就是注释下的值）
 * 但是，on*（onSelect， onMaxSizeExceed...）等函数的默认行为
 * 是在ID为i_stream_message_container的页面元素中写日志
 */
	var config = {
		browseFileId : "i_select_files", /** 选择文件的ID, 默认: i_select_files */
		browseFileBtn: '<div><button class="btn btn-primary"><span class="glyphicon glyphicon-folder-open"> 请选择文件</span></button></div>', /** 显示选择文件的样式, 默认: `<div>请选择文件</div>` */
		dragAndDropArea: "i_select_files", /** 拖拽上传区域，Id（字符类型"i_select_files"）或者DOM对象, 默认: `i_select_files` */
		dragAndDropTips: "<span>或者把文件拖拽到这个区域</span>", /** 拖拽提示, 默认: `<span>把文件(文件夹)拖拽到这里</span>` */
		filesQueueId : "i_stream_files_queue", /** 文件上传容器的ID, 默认: i_stream_files_queue */
		filesQueueHeight : 200, /** 文件上传容器的高度（px）, 默认: 450 */
		messagerId : "i_stream_message_container", /** 消息显示容器的ID, 默认: i_stream_message_container */
		multipleFiles: true, /** 多个文件一起上传, 默认: false */
		autoUploading: false, /** 选择文件后是否自动上传, 默认: true */
//		autoRemoveCompleted : true, /** 是否自动删除容器中已上传完毕的文件, 默认: false */
//		maxSize: 104857600//, /** 单个文件的最大大小，默认:2G */
//		retryCount : 5, /** HTML5上传失败的重试次数 */
//		postVarsPerFile : { /** 上传文件时传入的参数，默认: {} */
//			param1: "val1",
//			param2: "val2"
//		},
		swfURL : "../swf/FlashUploader.swf", /** SWF文件的位置 */
		tokenURL: "../upload/tk", /** 根据文件名、大小等信息获取Token的URI（用于生成断点续传、跨域的令牌） */
		uploadURL: "../upload/file", /** HTML5上传的URI */
//		frmUploadURL: "FileUpload.ashx?Method=fd;", /** Flash上传的URI */
//		simLimit: 200, /** 单次最大上传文件个数 */
//		extFilters: [".txt", ".rpm", ".rmvb", ".gz", ".rar", ".zip", ".avi", ".mkv", ".mp3"], /** 允许的文件扩展名, 默认: [] */
//		onSelect: function(list) {alert('onSelect')}, /** 选择文件后的响应事件 */
//		onMaxSizeExceed: function(size, limited, name) {alert('onMaxSizeExceed')}, /** 文件大小超出的响应事件 */
//		onFileCountExceed: function(selected, limit) {alert('onFileCountExceed')}, /** 文件数量超出的响应事件 */
//		onExtNameMismatch: function(name, filters) {alert('onExtNameMismatch')}, /** 文件的扩展名不匹配的响应事件 */
//		onCancel : function(file) {alert('Canceled:  ' + file.name)}, /** 取消上传文件的响应事件 */
		onComplete: CompleteUpload,//function(file) {alert('onComplete')}, /** 单个文件上传完毕的响应事件 */
//		onQueueComplete: function() {alert('onQueueComplete')}, /** 所以文件上传完毕的响应事件 */
		onUploadError: function(status, msg) {alert('onUploadError'+status+":"+msg)} /** 文件上传出错的响应事件 */
	};
	var _t = new Stream(config);

	var existingObj = ""; //已有对象
	function CompleteUpload(file)
	{
	    //alert(JSON.stringify(file));
	    //return;
	    var filename =  JSON.parse(file.msg).filepath;
	    var words = filename.split('\\');
	    var md5 = words[words.length-1];
	    var SysFile = {
	        "id": 0,
	        "type": "SysFile",
	        "properties": {
	            "filesize": file.size + "",
	            "name": file.name,
	            "filename": JSON.parse(file.msg).filepath,
	            "md5": md5

	        }
	    }
        //检查文件MD5是否已经存在
	    FileExists(SysFile);
	}

    //FileExists
	function FileExists(SysFile) {
	    var $scope = angular.element(document.getElementById('b')).scope();
	    var param = {
	        "connectionId": 1,
	        "user": {
	            "id": $scope.userinfo.user.id,
	            "type": "SysPerson"
	        },
	        "appName": "pdm",
	        "file": SysFile
	    }
	    $.ajax({
	        cache: false,
	        type: "POST",
	        contentType: "application/json",
	        url: '../app/invoke?fun=FileExists',
	        data: JSON.stringify(param),

	        success: function (data) {
	            var FileExistsResponse = JSON.parse(data);
	            if (FileExistsResponse.resFlag == 0) {
	                if (FileExistsResponse.result.id == 0) { //表示文件不存在
	                    UploadFile(SysFile) //则上传的SysFile对象id=0
	                } else {
	                    UploadFile(FileExistsResponse.result) //则上传的已经存在的SysFile	                    
	                }
	            } else {
	                alert(FileExistsResponse.errMsg);
	            }
	        }
	    });
	}

    //UploadFile
	function UploadFile(SysFile) {
	    var $scope = angular.element(document.getElementById('b')).scope();
	    var param = {
	        "connectionId": 1,
	        "user": {
	            "id": $scope.userinfo.user.id,
	            "type": "SysPerson"
	        },
	        "appName": "Pdm",
	        "file": SysFile
	    }

	    $.ajax({
	        cache: false,
	        type: "POST",
	        contentType: "application/json",
	        url: '../app/invoke?fun=UploadFile',
	        data: JSON.stringify(param),

	        success: function (data) {
	            var UploadFileResponse = JSON.parse(data);
	            if (UploadFileResponse.resFlag == 0) {
	                var doc = UploadFileResponse.result;
	                doc.id = 0;
	                doc.type = "PdmDocumentRev"
	                correlate(existingObj, doc, "PdmFolderDocument", 17)
	            } else {
	                alert(UploadFileResponse.errMsg);
	            }
	        }
	    });

	}

	//使有相互关系
	function correlate(objA, objB, relationName, childrenStrategy) {
	    var graph = {
	        "roots": [
                {
                    "entity": objA,
                    "nodeId": 0,
                    "children": [
                        {
                            "entity": objB,
                            "relation": {
                                "properties": {},
                                "lId": 0,
                                "lType": relationName,
                                "objIdA": objA.id,
                                "aClassType": objA.type,
                                "objIdB": objB.id,
                                "bClassType": objB.type
                            },
                            "nodeId": 1,
                            "children": [],
                            "strategy": childrenStrategy
                        }
                    ],
                    "strategy": 136
                }
	        ]
	    };
	    $.ajax({
	        cache: false,
	        type: "POST",
	        contentType: "application/json",
	        url: '../jridgeadvanced/batchdo',
	        data: JSON.stringify(graph),

	        success: function (data) {
	            var batchdoResponse = JSON.parse(data);
	            if (batchdoResponse.resFlag == 0) {
	                var $scope = angular.element(document.getElementById('b')).scope();
	                $scope.subfolder($scope.parentObj);
	                $('#upload').modal('hide');
	                $('.stream-files-scroll').text('');
	                $('#i_stream_message_container').text('');
	            } else {
	                alert(batchdoResponse.errMsg);
	            }

	        }
	    });
	}

</script>
